MATLAB:生成相同的随机数序列 |
您所在的位置:网站首页 › matlab 1 1 随机数 › MATLAB:生成相同的随机数序列 |
我想使用mersenne twister在10到50之间生成'N'个随机数.我希望能够一遍又一遍地生成相同的序列. 我写了以下代码:(种子= 50,a = 10,b = 50,N =所需随机数的数量) s = rng(seed, 'twister'); r = a + (b-a)*rand(N,1); rng(s); r1 = a + (b-a)*rand(N,1);现在即使我打印 r1 - r我没有得到零.我期望得到零,因为我已经将随机数生成器重置为我的代码第三行中的初始状态. 我的问题是我哪里出错了? 1> TroyHaskin..: 从rng文档: sprev = rng(...)返回由rand,, 使用的随机数生成器的先前设置randi,并randn在更改设置之前. 所以你s是先前的状态,而不是设定状态.改变事物 rng(seed, 'twister'); s=rng(); r = a + (b-a)*rand(N,1); rng(s); r1 = a + (b-a)*rand(N,1);应该产生所需的行为. 这可能看起来很麻烦,但它出现了,因为rng它意味着像切换一样对待:你设置你的状态,同时存储前一个用于将来的恢复.毕竟,立即重置状态似乎比实际更具诊断性. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |